package com.loeng.module.infra.framework.file.core.client;

import com.fasterxml.jackson.annotation.JsonTypeInfo;

/**
 * 文件客户端的配置（唯一作用就是实现的子类 json序列化 时 会有个@class ： 类型全路径）
 * 不同实现的客户端，需要不同的配置，通过子类来定义
 *
 * @ JsonTypeInfo(use = JsonTypeInfo.Id.CLASS)
 * 作用：
 * 多态类型信息：
 * 当你有一个继承层次结构（例如父类和多个子类），并且希望在序列化和反序列化 JSON 数据时能够正确区分这些子类，@JsonTypeInfo 注解可以提供必要的类型信息。
 * use = JsonTypeInfo.Id.CLASS：
 * JsonTypeInfo.Id.CLASS 表示使用 Java 类的全限定名（Fully Qualified Class Name）作为类型标识符。
 * 在序列化时，Jackson 会在生成的 JSON 中添加一个特殊的字段（默认是 @class），其值为对象的实际类名。
 * 在反序列化时，Jackson 使用这个类名来确定应该实例化哪个具体的子类。
 *
 * 如：当你序列化 LocalFileClientConfig
 * public class LocalFileClientConfig implements FileClientConfig {
 *     private String localPath;
 * }
 * Json 结果如下：
 * {
 *   "@class": "com.loeng.module.infra.framework.file.core.client.LocalFileClientConfig",
 *   "localPath": "/path/to/local/file"
 * }
 * 反序列化到内存对象时，通过 @class 属性，可以创建出正确的类型
 *
 * @author loeng zhuo
 */
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS)
public interface FileClientConfig {
}
